package com.zego.zegowawaji_server.utils;

/**
 * Command指令
 * <p>
 * 257 - 房间成员更新（Server-->Client）
 * 258 - 通知某人准备上机, 此时用户可使用 CMD_ABANDON_PLAY 放弃游戏（Server-->Client）
 * 260 - 通知游戏结果（Server-->Client）
 * 272 - 回复收到预约申请，并告知预约结果（Server-->Client）
 * 273 - 回复收到确认上机或者放弃玩游戏指令（Server-->Client）
 * 513 - 预约上机申请（Client-->Server）
 * 515 - 确认上机或者放弃玩游戏，仅在正式开始玩之前发送此指令有效，即在收到服务端的 CMD_GAME_READY 指令时，通过该指令告诉服务端开始玩还是放弃（Client-->Server）
 * 528 - 左移指令（Client-->Server）
 * 529 - 右移指令（Client-->Server）
 * 530 - 前移指令（Client-->Server）
 * 531 - 后移指令（Client-->Server）
 * 532 - 抓指令（Client-->Server）
 */
public class Command {
    /**
     * {
     * "seq": 1,
     * "cmd": 257,
     * "data": {
     * "total": 0,
     * "queue": [
     * {
     * "id": "userId",
     * "name": "userName"
     * "uid": "110872516"        // 自己服务器分配的用户id
     * "avatar": "oss/xxxx.png" // 头像地址
     * },
     * ],
     * "player": {
     * "id": "userId",
     * "name": "userName"
     * },
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_USER_UPDATE = 0x101;    // 房间成员更新（Server-->Client）

    /**
     * {
     * "seq": 1,
     * "cmd": 258,
     * "data": {
     * "player": {
     * "id": "userId",
     * "name": "userName"
     * },
     * "time_stamp'": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_GAME_READY = 0x102;     // 通知某人准备上机, 此时用户可使用 CMD_ABANDON_PLAY 放弃游戏（Server-->Client）

    /**
     * {
     * "seq": 1,
     * "cmd": 260,
     * "data": {
     * "result": 1,     # 1: 中奖，0: 未中奖
     * "player": {
     * "id": "userId",
     * "name": "userName"
     * },
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_GAME_RESULT = 0x104;    // 通知游戏结果（Server-->Client）

    /**
     * {
     * "seq": 1,
     * "cmd": 513,
     * "data": {
     * "time_stamp": 12345
     * "uid": 12345    // 携带预约用户的uid, 做资料请求操作
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_APPOINTMENT = 0x201;          // 预约上机申请（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 272,
     * "data": {
     * "result": 1, # 0: 成功, 1: 失败
     * "player": {
     * "id": "userId",
     * "name": "userName"
     * },
     * "index": 1,
     * "time_stamp": 12345,
     * "seq": 1
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_APPOINTMENT_REPLY = 0x110;  // 回复收到预约申请，并告知预约结果（Server-->Client）

    /**
     * {
     * "seq": 1,
     * "cmd": 514,
     * "data": {
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_CANCEL_APPOINTMENT = 0x202;   // 取消预约（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 274,
     * "data": {
     * "time_stamp": 12345,
     * "seq": 1
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_CANCEL_APPOINTMENT_REPLY = 0x112;   // 回复收到取消预约指令（Server-->Client）

    /**
     * {
     * "seq": 1,
     * "cmd": 515,
     * "data": {
     * "confirm": 1,    # 1: YES, 0: NO
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_START_OR_ABANDON_GAME = 0x203;    // 确认上机或者放弃玩游戏，仅在正式开始玩之前发送此指令有效，即在收到服务端的 CMD_GAME_READY 指令时，通过该指令告诉服务端开始玩还是放弃（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 273,
     * "data": {
     * "time_stamp": 12345,
     * "seq": 1
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_START_OR_ABANDON_GAME_REPLY = 0x111;    // 回复收到确认上机或者放弃玩游戏指令（Server-->Client）

    /**
     * {
     * "seq": 1,
     * "cmd": 516,
     * "data": {
     * "time_stamp'": 12345,
     * "seq": 1
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_GAME_READY_REPLY = 0x204; // 收到回复上机指令（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 517,
     * "data": {
     * "time_stamp": 12345,
     * "seq":1
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_GAME_RESULT_REPLY = 0x205;  // 回复收到游戏结果（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 528,
     * "data": {
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_MOVE_LEFT = 0x210;      // 左移指令（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 529,
     * "data": {
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_MOVE_RIGHT = 0x211;     // 右移指令（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 530,
     * "data": {
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_MOVE_FORWARD = 0x212;       // 前移指令（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 531,
     * "data": {
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_MOVE_BACKWARD = 0x213;    // 后移指令（Client-->Server）

    /**
     * {
     * "seq": 1,
     * "cmd": 532,
     * "data": {
     * "time_stamp": 12345
     * },
     * "session_data": {}
     * }
     */
    static final public int CMD_GRAB = 0x214;           // 抓指令（Client-->Server）
}
